package com.bianpai.core;

/**
 * 节点接口，代表业务流程中的一个操作单元
 */
public interface Node {
    /**
     * 执行节点操作
     * @param context 流程上下文
     * @return 节点执行结果
     */
    NodeResult execute(FlowContext context);
    
    /**
     * 回滚节点操作
     * @param context 流程上下文
     * @return 回滚是否成功
     */
    boolean rollback(FlowContext context);
    
    /**
     * 获取节点ID
     * @return 节点ID
     */
    String getId();
    
    /**
     * 获取节点名称
     * @return 节点名称
     */
    String getName();
    
    /**
     * 获取节点描述
     * @return 节点描述
     */
    String getDescription();
    
    /**
     * 判断节点是否可回滚
     * @return 是否可回滚
     */
    boolean isRollbackable();
}